extends Node
@onready var 玩家: 玩家节点 = $".."

@export_enum("键鼠操作","手柄操作",) var 当前操作方式:int


##不建议更改鼠标灵敏度，这个值不太受控，之后还需要改动。
@export_range(0.01,1.0) var 鼠标灵敏度:float = 1.0
@export_range(0.01,1.0) var 横向手柄灵敏度:float =  0.1
@export_range(0.01,1.0) var 竖向手柄灵敏度:float =  0.1





func _physics_process(delta: float) -> void:
	if 当前操作方式 == 0:
		键鼠移动控制(delta)
	else:
		手柄移动控制(delta)
		手柄视角控制()


func 手柄移动控制(delta:float):
	var 手柄移动1 =Input.get_axis("手柄向左","手柄向右")
	var 手柄移动2 =Input.get_axis("手柄向前","手柄向后")
	玩家.移动控制(Vector2(手柄移动1,手柄移动2),delta)


func 手柄视角控制():
	var 手柄向量1 = Input.get_axis("手柄视角左","手柄视角右") * 横向手柄灵敏度
	var 手柄向量2 = Input.get_axis("手柄视角上","手柄视角下") * 竖向手柄灵敏度
	var 手柄视角向量 = (Vector2(手柄向量1,手柄向量2)) 
	玩家.相机看向(手柄视角向量)
	pass


func 键鼠移动控制(delta:float):
	var 移动方向 := Input.get_vector( "向左移动", "向右移动","向前移动","向后移动")
	玩家.移动控制(移动方向,delta)


func _input(event: InputEvent) -> void:
	if event.is_action_pressed("射击") and GlobalFunc.启动游戏输入 == false and 当前操作方式 == 0:
		Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
	if event.is_action_pressed("ui_cancel") :
		Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
	if event is InputEventMouseMotion and 当前操作方式 == 0  :
		if GlobalFunc.启动游戏输入 == false :
			var 鼠标事件:Vector2 = event.relative * (鼠标灵敏度/750.0)
			玩家.相机看向(鼠标事件)
	if event.is_action_released("键盘tab键"):
		当前操作方式 = 0
	if event.is_action_released("手柄start键"):
		当前操作方式 = 1
